<html>
<head>
  <title>MyJXTA 2.5 [2007.11.07:19.36.12 +0000]</title>
  <link rel="stylesheet" href="main.css" type="text/css" media="screen">
</head>
<body>

<h3>MyJXTA 2.5 [2007.11.07:19.36.12 +0000]</h3>

<p>
<a href="http://myjxta2.jxta.org">MyJXTA</a> is a prototypical IM application
built on <a href="http://jxta.org">JXTA</a>.
</p>

<h3>Resources</h3>

<ul>
  <li><a href="http://myjxta2.jxta.org">Project Home</a></li>
  <li><a href="http://wiki.java.net/bin/view/Jxta/MyJXTA">Wiki</a></li>
  <li><a href="http://download.jxta.org/build/release">milestone builds</a></li>
  <li><a href="http://download.jxta.org/build/nightly">nightly build</a></li>
  <li><a href="mailto:dev@myjxta2.jxta.org?Subject=2007.11.07:19.36.12 +0000">
    dev at myjxta2 dot jxta dot org</a></li>
</ul>

<h3>Crew</h3>

<ul>
  <li><a href="mailto:mcangus@jxta.org">Mike McAngus</a></li>
  <li><a href="mailto:jamoore@jxta.org">Jeffrey Moore</a></li>
  <li><a href="mailto:gonzo@jxta.org">James Todd</a></li>
  <li><a href="mailto:wiarda@jxta.org">Dorothea Wiarda</a></li>
</ul>


<h3>Vision</h3>

<ul class="cleanList">
  <li class="cleanList"><a href="http://java.sun.com">Java</a> == platform idependence</li>
  <li class="cleanList"><a href="http://java.sun.com">XML</a> == application independence</li>
  <li class="cleanList"><a href="http://jxta.org">JXTA</a> == network independence</li>
</ul>

<h3>Table of Contents</h3>

<ul>
  <li><a href="#configuration">configuration</a>
    <ul>
      <li><a href="#registration">registration</a></li>
      <li><a href="#reconfigure">reconfigure</a></li>
    </ul>
  </li>
  <li><a href="#menu">menu</a></li>
  <li><a href="#navigation">navigation</a>
    <ul>
      <li><a href="#navigationQuickSearch">quick search</a></li>
    </ul>
  </li>
  <li><a href="#dialog">dialog</a>
    <ul>
      <li><a href="#dialogForum">forum</a></li>
      <li><a href="#dialogEditor">editor</a>
        <ul>
          <li><a href="#dialogEditorHTML">rich editor</a></li>
          <li><a href="#dialogEditorText">plain editor</a></li>
        </ul>
      </li>
      <li><a href="#dialogGroup">group</a></li>
      <li><a href="#dialog1to1">one-to-one</a></li>
      <li><a href="#dialogFilter">filters</a></li>
      <li><a href="#dialogListener">listeners</a></li>
    </ul>
  </li>
  <li><a href="#group">Group</a>
    <ul>
      <li><a href="#groupJoin">join</a></li>
      <li><a href="#groupAuthentication">authentication</a></li>
      <li><a href="#groupResign">leave</a></li>
      <li><a href="#groupCreate">create</a>
        <ul>
          <li><a href="#groupCreateAnonymous">anonymous</a></li>
          <li><a href="#groupCreateCredentialed">credentialed</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#share">shares</a>
    <ul>
      <li><a href="#shareFind">find</a></li>
      <li><a href="#shareView">view</a></li>
      <li><a href="#sharePublish">publish</a></li>
    </ul>
  </li>
  <li><a href="#search">searching</a>
    <ul>
      <li><a href="#peerSearch">peer search</a></li>
      <li><a href="#groupSearch">group search</a></li>
      <li><a href="#shareSearch">share search</a></li>
    </ul>
  </li>
  <li><a href="#internationalization">internationalization</a></li>
  <li><a href="#plugin">plugins</a></li>
  <li><a href="#requirements">system requirements</a></li>
  <li><a href="#acknowledgements">acknowledgements</a></li>
</ul>

<h3><a name="configuration">Configuration</a></h3>

<p>
...
</p>

<h3><a name="registration">Registration</a></h3>

<p>
When running MyJXTA for the first time you will be prompted for registration
information that includes your peer name and a certificate pass phrase, the
later of which is used to initiate secure communications via JXTA membership
authentication.
</p>

<h3><a name="menu">Menu</a></h3>

<p>
...
</p>

<h3><a name="navigation">Navigation</a></h3>

<p>
...
</p>

<h3><a name="navigationQuickSearch">Quick Search</a></h3>

<p>
The quick search function is a accessor to the default <a href="#search">search</a>
utility using the relevant defaults with results being immediately added to the
<a href="#navigation">navigation tree</a>.
</p>

<h3><a name="dialog">Dialog</a></h3>

<p>
A core feature of MyJXTA is prototypical Instant Messaging here to fore known
simply as "dialog."
</p>

<h3><a name="dialogForum">Forum</a></h3>

<p>
The aggregated dialog content is rendered in a read only text panel. The
scrollbar will automatically tracking incoming messages when it is placed
at the end (bottom) of the panel. If, on the other hand, the scrollbar is
moved to any location other then the end the panel will remain locked on
that text section, allowing one to read earlier messages without disruption.
</p>

<p>
Inbound and outbound messages are pre-processed by the associated dialog
<a href="#dialogFilter"> filters</a> and <a href="#dialogListener">listeners</a>
</p>

<p>
A supporting popup menu provides for the following extended functionality:
</p>

<ul>
  <li>save session to file</li>
  <li>clear</li>
</ul>

<h3><a name="dialogEditor">Editor</a></h3>

<p>
The dialog editor provides a means to create messages and is represented as a
typical text editor. Supported editor buttons include:
</p>

<ul>
  <li>undo</li>
  <li>redo</li>
  <li>cut</li>
  <li>copy</li>
  <li>past</li>
</ul>

<p>
The editor popup menu provides for extended text processing: 
</p>

<ul>
  <li>select all</li>
  <li>editor mode selection</li>
  <li>color (red, green, blue and black)</li>
</ul>

<p>
The following keystroke sequence provides support for mouseless message editting:
</p>

<ul>
  <li>alternate-u - undo</li>
  <li>alternate-r - redo</li>
  <li>alternate-c - cut</li>
  <li>alternate-p - copy</li>
  <li>alternate-t - paste</li>
  <li>alternate-a - select all</li>
  <li>control-enter - enter a new line</li>
  <li>control-f - next character</li>
  <li>control-b - previous character</li>
  <li>control-n - next line</li>
  <li>control-p - previous line</li>
  <li>control-up - previous message</li>
  <li>control-down - next message</li>
</ul>

<p>
Lastly, the editor supports drag-and-drop actions which provides for an easy
means to include local file content or web based content, eg: images.
</p>

<p>
Messages are dispatched by either entering a carriage return or pressing the
"Send" button. Outbound messages are pre-processed by the associated dialog
<a href="#dialogFilter"> filters</a> and <a href="#dialogListener">listeners</a>
</p>

<p>
An editor panel is dismissed either by select the "Dismiss" button or by
<a href="#groupResign">leaving the hosting group</a>.
</p>

<h3><a name="dialogEditorHTML">Rich Editor</a></h3>

<p>
The default editor natively supports HTML (text/html) content by providing
the following additional text processing options:
</p>

<ul>
  <li>bold</li>
  <li>italic</li>
  <li>underline</li>
  <li>justification (left, right and center)</li>
</ul>

<p>
The following additional keystroke sequence provides support for mouseless
message editting:
</p>

<ul>
  <li>alternate-b - bold</li>
  <li>alternate-i - italic</li>
  <li>alternate-u - underline</li>
  <li>alternate-l - left justification</li>
  <li>alternate-n - center justification</li>
  <li>alternate-r - right justification</li>
</ul>
  
<h3><a name="dialogEditorText">Text Editor</a></h3>

<p>
The optional editor supports text (text/plain) content.
</p>

<h3><a name="dialogGroup">Group</a></h3>

<p>
Group dialogs are a many-to-many message communications conducted over unencrypted
connections.
</p>

<h3><a name="dialog1to1">One-to-One</a></h3>

<p>
One-to-One dialogs are point-to-point communications conducted over encrypted
connections. One-to-One connections are established by first selecting a peer
in the <a href="#navigation">navigation tree</a> and then either selecting the
"Action -> Peers -> Chat with Peer" menu option or the equivalent popup option.
If the initiating peer is not presently <a href="#groupAuthentication">authenticated</a>
an authentication dialog will appear. Upon successfully authenticating the
peers will exchange certificates each prompting for certification validation
prior to importing the newly obtained certificate. Lastly, the responding peer
will provision a non-published advertisement to it's secure connection to which
the intitiating peer uses to establish the dialog communications channel.
</p>

<h3><a name="dialogFilter">Filters</a></h3>

<p>
Dialog filters process dialog messages in sequence and can optionally manipulate
the message including invalidating the message preventing further processing.
Existing filters include:
</p>

<ul>
  <li>(un)ban - ignore poster<br>
      /(un)ban &lt;peer-name&gt;<br>
  </li>
  <li>directive - command sequence<br>
      eg The (un)ban directives<br>
  </li>
  <li>emoticon - inline emoticons<br>
      Default Emoticons:<br>
      (u) = <img src="../themes/crystal-gaim/up.png">&nbsp;&nbsp;
      (f) = <img src="../themes/crystal-gaim/forward.png">&nbsp;&nbsp;
      (d) = <img src="../themes/crystal-gaim/down.png">&nbsp;&nbsp;
      (b) = <img src="../themes/crystal-gaim/back.png">&nbsp;&nbsp;
      (@) = <img src="../themes/crystal-gaim/appearance.png">&nbsp;&nbsp;
      (*) = <img src="../themes/crystal-gaim/bookmark.png">&nbsp;&nbsp;
      (ok) = <img src="../themes/crystal-gaim/button_ok.png"><br>
      (no) = <img src="../themes/crystal-gaim/button_cancel.png">&nbsp;&nbsp;
      (G) = <img src="../themes/crystal-gaim/reload.png">&nbsp;&nbsp;
      (%) = <img src="../themes/crystal-gaim/alarm.png">&nbsp;&nbsp;
      (n) = <img src="../themes/crystal-gaim/network.png">&nbsp;&nbsp;
      (pp) = <img src="../themes/crystal-gaim/people.png">&nbsp;&nbsp;
      (p) = <img src="../themes/crystal-gaim/person.png">&nbsp;&nbsp;
      |^| = <img src="../themes/crystal-gaim/home.png"><br>
      (i) = <img src="../themes/crystal-gaim/idea.png">&nbsp;&nbsp;
      (L) = <img src="../themes/crystal-gaim/kopete001.png">&nbsp;&nbsp;
      (pr) = <img src="../themes/crystal-gaim/kopete002.png">&nbsp;&nbsp;
      (po) = <img src="../themes/crystal-gaim/kopete003.png">&nbsp;&nbsp;
      (pg) = <img src="../themes/crystal-gaim/kopete004.png">&nbsp;&nbsp;
      (pb) = <img src="../themes/crystal-gaim/kopete005.png">&nbsp;&nbsp;
      ;P = <img src="../themes/crystal-gaim/kopete006.png"><br>
      $) = <img src="../themes/crystal-gaim/kopete007.png">&nbsp;&nbsp;
      8) = <img src="../themes/crystal-gaim/kopete008.png">&nbsp;&nbsp;
      {o = <img src="../themes/crystal-gaim/kopete009.png">&nbsp;&nbsp;
      :8 = <img src="../themes/crystal-gaim/kopete010.png">&nbsp;&nbsp;
      :O = <img src="../themes/crystal-gaim/kopete011.png">&nbsp;&nbsp;
      :@ = <img src="../themes/crystal-gaim/kopete012.png">&nbsp;&nbsp;
      ;) = <img src="../themes/crystal-gaim/kopete013.png"><br>
      :$ = <img src="../themes/crystal-gaim/kopete014.png">&nbsp;&nbsp;
      :| = <img src="../themes/crystal-gaim/kopete015.png">&nbsp;&nbsp;
      :P = <img src="../themes/crystal-gaim/kopete016.png">&nbsp;&nbsp;
      :D = <img src="../themes/crystal-gaim/kopete017.png">&nbsp;&nbsp;
      := = <img src="../themes/crystal-gaim/kopete018.png">&nbsp;&nbsp;
      :( = <img src="../themes/crystal-gaim/kopete019.png">&nbsp;&nbsp;
      :) = <img src="../themes/crystal-gaim/kopete020.png"><br><br>
      <b>Note:</b>  Emoticon Strings can be escaped by prefixing them with a forward-slash (/)<br>.
  </li>
  <li>empty message - ignore empty and/or invalid messages</li>
  <li>encoder - encode|decode special characters</li>
  <li>HTML normalizer - normalize dialog content</li>
  <li>legacy announce - ignore legacy messages</li>
  <li>ping - ping|pong protocol (need to use PingCommand)</li>
  <li>uri - mark up inbound href content</li>
</ul>

<h3><a name="dialogListener">Listeners</a></h3>

<p>
Dialog listeners process dialog messages concurrently and perform asynchronous
operations. Existing listeners include:
</p>

<ul>
  <li>eliza - conversationalist</li>
  <li>new message - search for peer</li>
  <li>pounce - greetings</li>
  <li>sounds - audio queue</li>
  <li>speech - text-to-speech</li>
</ul>

<h3><a name="group">Groups</a></h3>

<p>
...
</p>

<h3><a name="groupJoin">Group Join</a></h3>

<p>
...
</p>

<h3><a name="groupAuthentication">Group Authentication</a></h3>

<p>
...
</p>

<h3><a name="groupResign">Group Leave</a></h3>

<p>
...
</p>

<h3><a name="groupCreate">Group Create</a></h3>

<p>
...
</p>

<h3><a name="groupCreateAnonymous">Anonymous Group Membership</a></h3>

<p>
...
</p>

<h3><a name="groupCreateCredentialed">Credentialed Group Membership</a></h3>

<p>
...
</p>

<h3><a name="share">Share</a></h3>

<p>
...
</p>

<h3><a name="shareFind">Find</a></h3>

<p>
...
</p>

<h3><a name="shareView">View</a></h3>

<p>
Simple delegation to the system browse is used for Share viewing easily
providing for support for a wide variety of content types. A Share can
be viewed by selecting the relevant node in the <a href="#navigation">
navigation tree</a> followed by selecting the relevant "Action -> Share -> View"
menu option or the equivalent popup option afterwhich <a href="http://cms.jxta.org">CMS</a>
will retrieve a local copy of the published resource during which a
progress bar will be displayed. Upon download completion the content
will be delegated to the system browser for viewing.
</p>

<h3><a name="sharePublish">Publish</a></h3>

<p>
Content of any time can readily be published to the JXTA network by either
selecting the relevant node in the <a href="#navigation">navigation tree</a>
followed by selecting the relevant "Action -> Share -> Add Share" menu
option or the equivalent poup option afterwhich a file chooser dialog will
be presented. Alternatively one can simply drag-and-drop a file on the
<a href="#navigation">navigation tree</a> for simple publication.
</p>

<p>
note: dnd might be broken; explain local store; support dirs; firefox delegate lock; scoped to group
</p>

<h3><a name="search">Search</a></h3>

<p>
A general purpose JXTA Network search facility is provided supporting
Peer, Group and Share searches. The search panel is initiated by
selecting the relevant node in the <a href="#navigation">navigation
tree</a> followed by selecting the relevant "Action -> * -> Find"
menu option or the equivalent popup option afterwhich a search panel
will be displayed where one can specify the appropriate search
criteria. The search panel includes:
</p>

<ul>
  <li>conditional selectors (eg begins with, contains, ends with)</li>
  <li>query entry</li>
  <li>search start|stop operators</li>
  <li>search progress (eg max 3m)</li>
  <li>search dismissal</li>
</ul>

<p>
Search results are displayed in local results list and are additionally
added to the <a href="#navigation">navigation tree</a>.
</p>

<p>
Multiple searches can be activated concurrently with each search
accessible through a distinctively named tab.
</p>

<h3><a name="peerSearch">Peer Search</a></h3>

<p>
Peer search conditionals include:
</p>

<ul>
  <li>is - default</li>
  <li>begins with</li>
</ul>

<p>
The equivalent <a href="http://shell.jxta.org">Shell</a> search is:
</p>

<pre>
  % search -r -aName -vJXTA:IMFreeCommand.foo
</pre>

<h3><a name="groupSearch">Group Search</a></h3>

<p>
Group search conditoinals include:
</p>

<ul>
  <li>is - default</li>
  <li>contains</li>
  <li>begins with</li>
  <li>ends with</li>
</ul>

<p>
The equivalent <a href="http://shell.jxta.org">Shell</a> search is:
</p>

<pre>
  % groups -r -aName -Vfoo
</pre>

<h3><a name="shareSearch">Share Search</a></h3>

<p>
Share search conditionals include:
</p>

<ul>
  <li>is - default</li>
  <li>contains</li>
  <li>begins with</li>
  <li>ends with</li>
</ul>

<h3><a name="internationalization">Internationalization</a></h3>

<p>
MyJXTA supports internationalized content and is localized by consistently
using a Java ResourceBundle to access all static strings. The following
localizations have been donated:
</p>

<ul>
  <li>ar</li>
  <li>en</li>
  <li>es</li>
  <li>hu</li>
  <li>pt</li>
  <li>zh</li>
</ul>

<h3><a name="plugin">Plugin</a></h3>

<p>
...
</p>

<h3><a name="requirements">System Requirements</a></h3>

<ul>
  <li>web: <a href="http://java.sun.com/products/javawebstart">Java WebStart</a></li>
  <li>standalone: <a href="http://java.sun.com/j2se">Java JRE 1.4.2+</a></li>
</ul>

<h3><a name="acknowledgements">Acknowledgements</a></h3>

<ul>
  <li><a href="http://jxta.org">JXTA</a>
    <ul>
      <li><a href="http://platform.jxta.org">Platform</a></li>
      <li><a href="http://shell.jxta.org">Shell</a></li>
      <li><a href="http://cms.jxta.org">CMS</a></li>
      <li><a href="http://myjxta2.jxta.org">MyJXTA</a></li>
    </ul>
  </li>
  <li><a href="http://java.sun.com">Java</a>
    <ul>
      <li><a href="http://java.sun.com/products/javawebstart">Java WebStart</a></li>
      <li><a href="http://java/sun.com/j2se">Java</a></li>
    </ul>
  </li>
  <li><a href="http://java.net">java.net</a>
    <ul>
      <li><a href="http://wiki.java.net/bin/view/Jxta/WebHome">JXTA Wiki</a></li>
      <li><a href="http://jdnc.dev.java.net">JDNC</a></li>
      <li><a href="http://bloged.dev.java.net">BlogEd</a></li>
    </ul>
  </li>
  <li><a href="http://jakarta.apache.org">Jakarta</a>
    <ul>
      <li><a href="http://ant.apache.org">Ant</a></li>
    </ul>
  </li>
  <li><a href="http://freetts.sourceforge.net">FreeTTS</a></li>
  <li><a href="http://prefuse.sourceforge.net">Prefuse</a></li>
  <li><a href="http://javazoom.net">JavaZoom</a></li>
  <li><a href="http://chayden.net/eliza/Eliza.html">Eliza</a></li>
  <li><a href="http://splotch.sourceforge.net">Splotch</a></li>
  <li><a href="http://fasticon.com">FastIcon</a></li>
  <li><a href="http://http://www.everaldo.com/">Everaldo</a></li>
  <li><a href="http://sun.com">Sun Microsystems, Inc.</a></li>
  <li><a href="http://firefox.com">FireFox</a></li>
  <li><a href="http://radiohead.com">RadioHead</a></li>
  <li><a href="http://homepage.mac.com/toddsmac">TamNTrey</a></li>
</ul>

</body>
</html>
